package com.syl.practice.globalException2.controller;

import com.syl.practice.globalException2.anno.ResponseResult;
import com.syl.practice.globalexception.dto.User;
import com.syl.practice.globalexception.enums.ApiEnum;
import com.syl.practice.globalexception.exception.ApiException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 *  详情见：https://mp.weixin.qq.com/s/N3yTj6oukAJ1tlUAKFw2ng
 *
 *  自定义注解@ResponseResult
 *  请求进来时，拦截器根据请求路径找到Controller类，并类判断上面或该方法上面有没有该注解
 *  有的话，给该请求一个自定义的标识，执行完方法后根据该标识进行结果的统一封装
 *  注：1. 当方法返回类型是String时，需要单独处理；
 *      2. 异常封装是针对try catch情况的，方法直接throw异常是不适用的！！
 */

@Slf4j
@RestController
@RequestMapping("/exc2")
@ResponseResult
public class Exception2Controller {
    @RequestMapping("/getUser")
    public User getUser() {
        return new User(1,"lucy");
    }

    @RequestMapping("/getStr")
    public String getStr() {
        return "success";
    }

    @RequestMapping("/getExc")
    public Object getExc() {
        return new ApiException(ApiEnum.ERROR);
    }
}
